﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace GestionEco
{
    public class Chien : Carnivore
    {
        private static int numero = 0;

        public Chien(bool s, int uneVieMax, int uneAttaque, int uneEsquive, int desDegats, int uneVue, int uneRegen, int uneFaimMax, int unCoeffFaim, int uneSoifMax, int unCoeffSoif, int desPointsActionActuels, int unAgeMax, int uneMajorite, int unNbTourReprod, Image imageChien)
            : base(s, uneVieMax, uneAttaque, uneEsquive, desDegats, uneVue, uneRegen, uneFaimMax, unCoeffFaim, uneSoifMax, unCoeffSoif, desPointsActionActuels, unAgeMax, uneMajorite, unNbTourReprod, "Chien-" + numero++, imageChien, new List<String> { "Plaine", "Montagne" })
        {
            
        }

        public override EtreVivant seReproduire(EtreVivant unChien)
        {
            if (!retraitPoints(POINT_SEREPRODUIRE))
            {
                Console.WriteLine("Plus de points pour se reproduire");
                return null;
            }
            else
            {
                Chien enfant = null;
                if (this.Sexe != unChien.Sexe)
                {
                    Random rnd = new Random();

                    int enfAttaque = (this.Attaque + unChien.Attaque) / 2;
                    int enfEsquive = (this.Esquive + unChien.Esquive) / 2;
                    int enfDegats = (this.Degats + unChien.Degats) / 2;
                    int enfVue = (this.Vue + unChien.Vue) / 2;
                    int enfRegen = (this.Regen + unChien.Regen) / 2;
                    int enfFaimMax = (this.FaimMax + unChien.FaimMax) / 2;
                    int enfCoeffFaim = (this.CoeffFaim + unChien.CoeffFaim) / 2;
                    int enfVieMax = (this.VieMax + unChien.VieMax) / 2;
                    int enfSoifMax = (this.SoifMax + unChien.SoifMax) / 2;
                    int enfCoeffSoif = (this.CoeffSoif + unChien.CoeffSoif) / 2;
                    int enfPointsActuel = 6;
                    int enfAgeMax = (this.AgeMax + unChien.AgeMax) / 2;
                    int enfMajorite = (this.Majorite + unChien.Majorite) / 2;
                    int enfNbTourReprod = (this.NbTourReprod + unChien.NbTourReprod) / 2;
                    int enfS = rnd.Next(1, 3);
                    bool enfSexe;

                    if (enfS == 1)
                    {
                        enfSexe = true;
                    }
                    else
                    {
                        enfSexe = false;
                    }


                    enfant = new Chien(enfSexe, enfVieMax, enfAttaque, enfEsquive, enfDegats, enfVue, enfRegen, enfFaimMax, enfCoeffFaim, enfSoifMax, enfCoeffSoif, enfPointsActuel, enfAgeMax, enfMajorite, enfNbTourReprod, this.imageEtre);
                }
                else
                {
                    Console.WriteLine("Les deux etres vivants ont le meme sexe");
                    return null;
                }

                return enfant;
            }
        }

    }
}
